package com.hqy.oauth.aspect;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 登录接口请求限流注解
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FailRequestLimit {
    /**
     * 最大尝试次数
     * @return
     */
    int maxRetries();

    /**
     * 时间窗口
     * @return
     */
    int timeWindow();

    /**
     * 错误码
     * @return
     */
    String errorCode();

    /**
     * 错误消息
     * @return
     */
    String errorMessage();

    /**
     * 锁的key
     * @return
     */
    String lockKey() default "";

    /**
     * 锁的时间单位
     * @return
     */
    TimeUnit unit() default TimeUnit.MINUTES;

}
